# coding:UTF-8

class Master(object):
    def __init__(self):
        self.tranfomer = '【七十二变心法绝学】'

    def make_kongfu(self):
        print(f'运用{self.tranfomer}习得这项技能')

class Anmaster(object):
    def __init__(self):
        self.tranfomer = '【长生不老，秘密在自由基中】'

    def make_kongfu(self):
        print(f'运用{self.tranfomer}习得这项技能')

class Prentice(Anmaster,Master):
    def __init__(self):
        self.tranfomer = '【独创本领——变大变小】'

        # 如果先调用父类的属性和方法，父类属性就会覆盖子类属性，故在调用属性前，先调用自己子类的初始化
    def make_kongfu(self):
        self.__init__()
        print(f'运用{self.tranfomer}习得这项技能')

        # 调用父类方法，为了保证调用的的是父类的属性，必须在调用方法之前调用父类的初始化
    def make_master_kongfu(self):
        Master.__init__(self)  # 调用第一个师傅的属性
        Master.make_kongfu(self)  # 调用第一个师傅的方法

    def make_anmaster_kongfu(self):
        Anmaster.__init__(self)  # 调用另一个师傅的属性
        Anmaster.make_kongfu(self)  # 调用另一个师傅的方法
class Tusun(Prentice):
    pass

if __name__ == '__main__':
    zhangsan = Tusun()
    zhangsan.make_kongfu()
    zhangsan.make_master_kongfu()
    zhangsan.make_anmaster_kongfu()
